/*
 * Ext.util.MixedCollection 集合类
 */
(function() {
	Ext.onReady(function() {
				/**
				 * 1. add( String key, Object o ) : Object 添加一个元素
				 */
				// 实例化一个集合对象
				var item1 = new Ext.util.MixedCollection();
				var a = {
					name : 'abcd'
				};
				var b = {
					name : 'b'
				};
				item1.add(a);
				item1.add(b);
				// 遍历集合的元素，元素是一个对象，是一个item1.items
				// Ext.Array.each(item1.items, function(obj) {
				// alert(obj.name);
				// });
				// alert(item1.items[0].name);

				/**
				 * addAll( Object/Array objs ) Adds all elements of an Array or
				 * an Object to the collection. 添加一个数组或者对象的所有元素到集合中
				 */
				var item2 = new Ext.util.MixedCollection();
				var arr = [];
				arr.push(a);
				arr.push(b);
				item2.addAll(arr);
				// 遍历集合的元素，元素是一个对象，是一个item1.items
				// Ext.Array.each(item1.items, function(obj) {
				// alert(obj.name);
				// });

				/**
				 * clear( ) Removes all items from the collection. Fires the
				 * clear event when complete.
				 */
				// item2.clear(); //移除集合的所有元素
				// Ext.Array.each(item2.items, function(obj) {
				// alert(obj.name);
				// });
				/**
				 * clone( ) : Ext.util.MixedCollection Creates a shallow copy of
				 * this collection
				 */
				// var item3 = item1.clone();
				// Ext.Array.each(item3.items, function(obj) {
				// alert(obj.name);
				// });
				/**
				 * contains( Object o ) : Boolean Returns true if the collection
				 * contains the passed Object as an item. 判断集合中是否存在某个对象
				 */
				// alert(item1.contains(b)); //true
				/**
				 * containsKey( String key ) : Boolean Returns true if the
				 * collection contains the passed Object as a key. ...
				 */
				// 实例化一个集合对象
				// var item4 = new Ext.util.MixedCollection();
				// var a = {name: 'abcd'};
				// var b = {name: 'b'};
				// item4.add('01', a);
				// item4.add('02', b);
				// alert(item4.containsKey('01'));
				/**
				 * each( Function fn, [Object scope] ) Executes the specified
				 * function once for every item in the collection, passing the
				 * following arguments:
				 */
			// item1.each(function(item) {
			// alert(item.name);
			// });
				
				//----------集合事件---------------
				/**
				 * add( Number index, Object o, String key, Object eOpts )
				 * Fires when an item is added to the collection.
				 */
				item1.on("add", function(index, o, key){
					alert("集合item1添加了一个新的元素： " + o.name);
					alert("  index: " + index);  //相当于数组的下标
					alert("  key: " + key);  //map的键
				});
				//触发上述的add事件
				item1.add("03", {name:'zhangsan'});
			});
})();
